

package com.hazelcast.security.permission;

public class MapPermission extends InstancePermission {

    private static final int PUT = 4;
    private static final int REMOVE = 8;
    private static final int READ = 16;
    private static final int LISTEN = 32;
    private static final int LOCK = 64;
    private static final int INDEX = 128;
    private static final int INTERCEPT = 256;
    private static final int ALL = CREATE | DESTROY | PUT | REMOVE | READ | LISTEN | LOCK | INDEX | INTERCEPT;

    public MapPermission(String name, String... actions) {
        super(name, actions);
    }

    @Override
    protected int initMask(String[] actions) {
        int mask = NONE;
        for (String action : actions) {
            if (ActionConstants.ACTION_ALL.equals(action)) {
                return ALL;
            }

            if (ActionConstants.ACTION_CREATE.equals(action)) {
                mask |= CREATE;
            } else
                if (ActionConstants.ACTION_DESTROY.equals(action)) {
                    mask |= DESTROY;
                } else
                    if (ActionConstants.ACTION_PUT.equals(action)) {
                        mask |= PUT;
                    } else
                        if (ActionConstants.ACTION_REMOVE.equals(action)) {
                            mask |= REMOVE;
                        } else
                            if (ActionConstants.ACTION_READ.equals(action)) {
                                mask |= READ;
                            } else
                                if (ActionConstants.ACTION_LISTEN.equals(action)) {
                                    mask |= LISTEN;
                                } else
                                    if (ActionConstants.ACTION_LOCK.equals(action)) {
                                        mask |= LOCK;
                                    } else
                                        if (ActionConstants.ACTION_INDEX.equals(action)) {
                                            mask |= INDEX;
                                        } else
                                            if (ActionConstants.ACTION_INTERCEPT.equals(action)) {
                                                mask |= INTERCEPT;
                                            }
        }
        return mask;
    }
}
